home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr48 / vdl020d.zip / VEMS.DOC < prev    next >
Text File  |  1993-04-14  |  10KB  |  311 lines

  1. {
  2.  ════════════════════════════════════════════════════════════════════════════
  3.  
  4.  Visionix Expanded Memory Services Unit (VEMS)
  5.  Copyright 1991,92,93 Visionix
  6.  ALL RIGHTS RESERVED
  7.  
  8.  ────────────────────────────────────────────────────────────────────────────
  9.  
  10.  Revision history in reverse chronological order:
  11.  
  12.  Initials  Date      Comment
  13.  ────────  ────────  ────────────────────────────────────────────────────────
  14.  
  15.  mep       03/30/93  Moved EMS 4.0/3.2 code from VMemLow as replacement
  16.  
  17.  lpg       03/15/93  Added Source Documentation
  18.  
  19.  mep       02/11/93  Cleaned up code for beta release
  20.  
  21.  jrt       02/08/93  Sync with beta 0.12 release
  22.  
  23.  jrt       12/07/92  Sync with beta 0.11 release
  24.  
  25.  jrt       11/21/92  Sync with beta 0.08
  26.  
  27.  jrt       11/18/92  First logged revision.
  28.  
  29.  ────────────────────────────────────────────────────────────────────────────
  30.  
  31. }
  32.  
  33. Unit VEMS;
  34.  
  35.  
  36. Uses
  37.  
  38.   VTypes,
  39.   DOS;
  40.  
  41. {────────────────────────────────────────────────────────────────────────────}
  42.  
  43. Type
  44.  
  45.   TEMSError  = BYTE;
  46.  
  47.   {-----------------------------}
  48.  
  49.   TEMSHandle = WORD;
  50.   PEMSHandle = ^TEMSHandle;
  51.  
  52.   {-----------------------------}
  53.  
  54.   TEMMHandle = WORD;
  55.   PEMMHandle = ^TEMMHandle;
  56.  
  57.   {-----------------------------}
  58.  
  59.   TEMSMapArr = RECORD
  60.  
  61.     LogicPage    : WORD;  { $FFFF = unmap physical pg }
  62.     PhysicalPage : WORD;  { segment address }
  63.  
  64.   END;
  65.   PEMSMapArr = ^TEMSMapArr;
  66.  
  67.   {-----------------------------}
  68.  
  69.   TEMSHandleName = Array[1..8] of BYTE;
  70.   PEMSHandleName = ^TEMSHandleName;
  71.  
  72.   {-----------------------------}
  73.  
  74.   TEMSHandleDir = RECORD
  75.  
  76.     Handle     : WORD;
  77.     HandleName : TEMSHandleName;
  78.  
  79.   END;
  80.   PEMSHandleDir = ^TEMSHandleDir;
  81.  
  82.   {-----------------------------}
  83.  
  84.   TEMSMapAddr = RECORD
  85.  
  86.   END;
  87.   PEMSMapAddr = ^TEMSMapAddr;
  88.  
  89.   {-----------------------------}
  90.  
  91.   TEMSCopyData = RECORD
  92.  
  93.     RegionLen       : LONGINT;
  94.     SourceMemType   : BYTE;     { 0 = conventional, 1 = expanded }
  95.     SourceHandle    : WORD;     { 0 if conventional memory       }
  96.     SourceInitOfs   : WORD;     { within page if EMS,            }
  97.                                 { within segment if conventional }
  98.     SourceInitSegPg : WORD;     { segment if conventional memory,}
  99.                                 { logical page if EMS            }
  100.     DestMemType     : BYTE;     { 0 = conventional, 1 = expanded }
  101.     DestHandle      : WORD;
  102.     DestInitOfs     : WORD;
  103.     DestInitSegPg   : WORD;
  104.  
  105.   END;
  106.   PEMSCopyData = ^TEMSCopyData;
  107.  
  108.   {-----------------------------}
  109.  
  110.   TEMSMapPhyAddr = RECORD
  111.  
  112.     PhysicalPgSeg : WORD;
  113.     PhysicalPgNum : WORD;
  114.  
  115.   END;
  116.   PEMSMapPhyAddr = ^TEMSMapPhyAddr;
  117.  
  118.   {-----------------------------}
  119.  
  120.   TEMSHardwareCfgArr = RECORD
  121.  
  122.     SizeRawEMMPg       : WORD;  { in paragraphs }
  123.     NumAlternRegSet    : WORD;
  124.     SizeSaveMapContext : WORD;  { in bytes }
  125.     NumRegSetAssignDMA : WORD;
  126.     DMAOperationType   : WORD;  { 0 = DMA w/alternate register sets,  }
  127.                                 { 1 = only one DMA register set       }
  128.  
  129.   END;
  130.   PEMSHardwareCfgArr = ^TEMSHardwareCfgArr;
  131.  
  132. {────────────────────────────────────────────────────────────────────────────}
  133.  
  134. {----------}
  135. { EMS 3.2+ }
  136. {----------}
  137.  
  138. Function  VEMSErrorToStr(             Status       : TEMSError  ) : STRING;
  139.  
  140. Function  VEMSInstalled                            : BOOLEAN;
  141.  
  142. Function  VEMSGetManagerStatus                     : TEMSError;
  143.  
  144. Function  VEMSGetPgFrameStatus(   Var PgFrameSeg   : WORD       ) : TEMSError;
  145.  
  146. Function  VEMSGetFreePg(          Var UnallocPg    : WORD;
  147.                                   Var TotalPg      : WORD       ) : TEMSError;
  148.  
  149. Function  VEMSNewHandle(              LogicalPg    : WORD;
  150.                                   Var EMSHandle    : TEMSHandle ) : TEMSError;
  151.  
  152. Function  VEMSMapMemory(              EMSHandle    : TEMSHandle;
  153.                                       PhysicalPg   : BYTE;
  154.                                       LogicalPg    : WORD       ) : TEMSError;
  155.  
  156. Function  VEMSDisposeHandle(          EMMHandle    : TEMMHandle ) : TEMSError;
  157.  
  158. Function  VEMMGetVersion(         Var EMMVersion   : BYTE       ) : TEMSError;
  159.  
  160. Function  VEMSSaveMapContext(         EMSHandle    : TEMSHandle ) : TEMSError;
  161.  
  162. Function  VEMSRestoreMapContext(      EMSHandle    : TEMSHandle ) : TEMSError;
  163.  
  164. Function  VEMMGetNumHandles(      Var NumHandles   : WORD       ) : TEMSError;
  165.  
  166. Function  VEMSPgsOwnedByHandle(       EMMHandle    : TEMMHandle;
  167.                                   Var LogicalPgs   : WORD       ) : TEMSError;
  168.  
  169. Function  VEMSGetPgAllHandles(        EMMInfo      : POINTER;
  170.                                   Var NumHandles   : WORD       ) : TEMSError;
  171.  
  172. Function  VEMSGetPgMap(               OutMapReg    : POINTER    ) : TEMSError;
  173.  
  174. Function  VEMSSetPgMap(               InMapReg     : POINTER    ) : TEMSError;
  175.  
  176. Function  VEMSGetSetPgMap(            InMapReg     : POINTER;
  177.                                       OutMapReg    : POINTER    ) : TEMSError;
  178.  
  179. Function  VEMSGetSizePgMapArr(    Var Size         : BYTE       ) : TEMSError;
  180.  
  181.  
  182. {────────────────────────────────────────────────────────────────────────────}
  183.  
  184. {---------}
  185. { EMS 4.0 }
  186. {---------}
  187.  
  188. Function  VEMSGetPartPgMap(           InPartMap    : POINTER;
  189.                                       OutPartMap   : POINTER    ) : TEMSError;
  190.  
  191. Function  VEMSSetPartPgMap(           InPartMap    : POINTER    ) : TEMSError;
  192.  
  193. Function  VEMSGetSizePartPgMap(       NumMapSeg    : WORD;
  194.                                   Var Size         : BYTE       ) : TEMSError;
  195.  
  196. Function  VEMSMapMultiHandlePg(       EMSHandle    : TEMSHandle;
  197.                                       UseSegAddr   : BOOLEAN;
  198.                                       NumInArr     : WORD;
  199.                                       EMSMapArr    : PEMSMapArr ) : TEMSError;
  200.  
  201. Function  VEMSReallocatePg(           EMSHandle    : TEMSHandle;
  202.                                       NumPg        : WORD;
  203.                                   Var RealNumP     : WORD       ) : TEMSError;
  204.  
  205. Function  VEMSGetHandleAttr(          EMSHandle    : TEMSHandle;
  206.                                   Var HandleAttr   : BYTE       ) : TEMSError;
  207.  
  208. Function  VEMSSetHandleAttr(          EMSHandle    : TEMSHandle;
  209.                                       HandleAttr   : BYTE       ) : TEMSError;
  210.  
  211. Function  VEMSGetHandleCapable(       EMSHandle    : TEMSHandle;
  212.                                   Var AttrCapable  : BYTE       ) : TEMSError;
  213.  
  214. Function  VEMSGetHandleName(          EMSHandle    : TEMSHandle;
  215.                                       HandleName   : POINTER    ) : TEMSError;
  216.  
  217. Function  VEMSSetHandleName(          EMSHandle    : TEMSHandle;
  218.                                       HandleName   : POINTER    ) : TEMSError;
  219.  
  220. Function  VEMSGetHandleDir(           HandleDir    : PEMSHandleDir;
  221.                                   Var NumEntries   : BYTE       ) : TEMSError;
  222.  
  223. Function  VEMSSearchNamedHandle(      HandleName   : PEMSHandleName;
  224.                                   Var Value        : WORD       ) : TEMSError;
  225.  
  226. Function  VEMSGetTotalHandles(    Var TotalHandles : WORD       ) : TEMSError;
  227.  
  228. Function  VEMSAlterPgMapJump(         EMSHandle    : TEMSHandle;
  229.                                       UseSegAddr   : BOOLEAN;
  230.                                       MapAddr      : PEMSMapAddr) : TEMSError;
  231.  
  232. Function  VEMSAlterPgMapCall(         EMSHandle    : TEMSHandle;
  233.                                       UseSegAddr   : BOOLEAN;
  234.                                       MapAddr      : PEMSMapAddr) : TEMSError;
  235.  
  236. Function  VEMSGetPgMapStackReq(   Var StackSpaceReq: WORD       ) : TEMSError;
  237.  
  238. Function  VEMSMoveMemRegion(          EMSCopyData  : PEMSCopyData): TEMSError;
  239.  
  240. Function  VEMSExchangeMemRegion(      EMSCopyData  : PEMSCopyData): TEMSError;
  241.  
  242. Function  VEMSGetMapPhyAddrArr(       MapPhyAddr   : PEMSMapPhyAddr;
  243.                                   Var NumEntries   : WORD       ) : TEMSError;
  244.  
  245. Function  VEMSGetEntriesMPAArr(   Var NumEntries   : WORD       ) : TEMSError;
  246.  
  247. Function  VEMSHardwareCfgArr(         EMSHardwareCfgArr : PEMSHardwareCfgArr ) : TEMSError;
  248.  
  249. Function  VEMSGetUnallocRawPg(    Var UnallocRawPg : WORD;
  250.                                   Var TotalRawPg   : WORD       ) : TEMSError;
  251.  
  252. Function  VEMSAllocStandardPg(        NumPg        : WORD;
  253.                                   Var EMSHandle    : TEMSHandle ) : TEMSError;
  254.  
  255. Function  VEMSAllocRawPg(             NumPg        : WORD;
  256.                                   Var EMSHandle    : TEMSHandle ) : TEMSError;
  257.  
  258. Function  VEMSGetAltMapRegSet(    Var AltMapRegSet : BYTE;
  259.                                       SaveMapContxt: POINTER    ) : TEMSError;
  260.  
  261. Function  VEMSSetAltMapRegSet(        AltMapRegSet : BYTE;
  262.                                       SaveMapContxt: POINTER    ) : TEMSError;
  263.  
  264. Function  VEMSGetAltMapSaveArrSize(Var ArrSize     : WORD       ) : TEMSError;
  265.  
  266. Function  VEMSAllocAltMapRegSet(  Var AltMapRegSet : BYTE       ) : TEMSError;
  267.  
  268. Function  VEMSDeallocAltMapRegSet(    AltMapRegSet : BYTE       ) : TEMSError;
  269.  
  270. Function  VEMSAllocDMARegSet(     Var DMARegSet    : BYTE       ) : TEMSError;
  271.  
  272. Function  VEMSEnabDMAAltMapRegSet(    DMARegSet    : BYTE;
  273.                                       DMAChannel   : BYTE       ) : TEMSError;
  274.  
  275. Function  VEMSDisabDMAAltMapRegSet(   DMARegSet    : BYTE       ) : TEMSError;
  276.  
  277. Function  VEMSDeallocDMARegSet(       DMARegSet    : BYTE       ) : TEMSError;
  278.  
  279. Function  VEMSPrepWarmBoot                         : TEMSError;
  280.  
  281. Function  VEMSEnabOSFuncSet(      Var AccessKey    : LONGINT    ) : TEMSError;
  282.  
  283. Function  VEMSDisabOSFuncSet(     Var AccessKey    : LONGINT    ) : TEMSError;
  284.  
  285. Function  VEMSRetAccessKey(       Var AccessKey    : LONGINT    ) : TEMSError;
  286.  
  287. {────────────────────────────────────────────────────────────────────────────}
  288.  
  289.  
  290. ──────────────────────────────────────────────────────────────────────────────
  291.  
  292.  
  293. [FUNCTION]
  294.  
  295. Function  VEMSInstalled                            : BOOLEAN;
  296.  
  297. [PARAMETERS]
  298.  
  299. (None)
  300.  
  301. [RETURNS]
  302.  
  303. Whether EMS Support is Available
  304.  
  305. [DESCRIPTION]
  306.  
  307. [SEE-ALSO]
  308.  
  309. [EXAMPLE]
  310.  
  311.